OpenSCManagerW 函数 (winsvc.h) |
您所在的位置:网站首页 › [sc] openservice 失败 5 › OpenSCManagerW 函数 (winsvc.h) |
OpenSCManagerW 函数 (winsvc.h)
项目08/27/2023
与指定计算机上的服务控制管理器建立连接,并打开指定的服务控制管理器数据库。 语法 SC_HANDLE OpenSCManagerW( [in, optional] LPCWSTR lpMachineName, [in, optional] LPCWSTR lpDatabaseName, [in] DWORD dwDesiredAccess ); 参数[in, optional] lpMachineName 目标计算机的名称。 如果指针为 NULL 或指向空字符串,则该函数将连接到本地计算机上的服务控制管理器。 [in, optional] lpDatabaseName 服务控制管理器数据库的名称。 此参数应设置为 SERVICES_ACTIVE_DATABASE。 如果为 NULL,则默认打开SERVICES_ACTIVE_DATABASE数据库。 [in] dwDesiredAccess 对服务控制管理器的访问。 有关访问权限的列表,请参阅 服务安全性和访问权限。 在授予请求的访问权限之前,系统会根据与服务控制管理器关联的安全描述符的任意访问控制列表检查调用进程的访问令牌。 SC_MANAGER_CONNECT访问权限是通过调用此函数隐式指定的。 返回值如果函数成功,则返回值是指定服务控制管理器数据库的句柄。 如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。 SCM 可以设置以下错误代码。 其他错误代码可由 SCM 调用的注册表函数设置。 返回代码 说明 ERROR_ACCESS_DENIED 请求的访问被拒绝。 ERROR_DATABASE_DOES_NOT_EXIST 指定的数据库不存在。 注解当进程使用 OpenSCManager 函数打开服务控制管理器数据库的句柄时,系统会在授予请求的访问权限之前执行安全检查。 有关详细信息,请参阅 服务安全和访问权限。 如果当前用户在连接到另一台计算机上的服务时没有适当的访问权限, OpenSCManager 函数调用将失败。 若要远程连接到服务,请使用 LOGON32_LOGON_NEW_CREDENTIALS 调用 LogonUser 函数,然后在调用 OpenSCManager 之前调用 ImpersonateLoggedOnUser。 有关远程连接到服务的详细信息,请参阅 服务和 RPC/TCP。 只有具有管理员权限的进程才能打开可由 CreateService 函数使用的数据库句柄。 返回的句柄仅对调用 OpenSCManager 函数的进程有效。 可以通过调用 CloseServiceHandle 函数来关闭它。 示例有关示例,请参阅 更改服务的配置。 注意 winsvc.h 标头将 OpenSCManager 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。 要求 要求 值 最低受支持的客户端 Windows XP [仅限桌面应用] 最低受支持的服务器 Windows Server 2003 [仅限桌面应用] 目标平台 Windows 标头 winsvc.h (包括 Windows.h) Library Advapi32.lib DLL Advapi32.dll 另请参阅CloseServiceHandle CreateService EnumServicesStatusEx OpenService SCM 句柄 服务函数 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |